﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace hercules.Models
{
    public class CompraModel
    {

        [DisplayName("Num Nota")]
        public Int32 numeroNota { get; set; }

        [Required]
        [DisplayName("Funcionario")]
        public Int32 funcionario { get; set; }

        [DisplayName("Funcionario")]
        public Int32 fornecedor { get; set; }

        [Required]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        [DisplayName("Data Emissão")] 
        public DateTime dataEmissão { get; set; }

        [DisplayName("Base Calculo ST")]
        public decimal baseCalculoST { get; set; }

        [DisplayName("Valor Nota")]
        public decimal valorNota { get; set; }

        [DisplayName("Base Calculo ICMS")]
        public decimal baseCalculoIcms { get; set; }

        [DisplayName("Valor ICMS")]
        public Int32 valorIcms { get; set; }

        [DisplayName("Valor ST")]
        public Int32 valorST { get; set; }

        [DisplayName("Status Compra")]
         [StringLength(10, ErrorMessage = "Campo deve possuir no máximo dez caracteres")]
        public string statusCompra { get; set; }

        public Compra CompraModelToCompra(CompraModel compraModel)
        {
            Compra compra = new Compra();
            compra.numeroNota = compraModel.numeroNota;
            compra.funcionario = compraModel.funcionario;
            compra.fornecedor = compraModel.fornecedor;
            compra.dataEmissao = compraModel.dataEmissão;
            compra.baseCalculoST = compraModel.baseCalculoST;
            compra.valorNota = compraModel.valorNota;
            compra.baseCalculoIcms =compraModel.baseCalculoIcms;
            compra.valorIcms = compraModel.valorIcms;
            compra.valorST = compraModel.valorST;
            compra.statusCompra = compraModel.statusCompra;

          
          
            return compra;
        }

        public CompraModel CompraToCompraModel(Compra compra)
        {
            CompraModel compraModel = new CompraModel();
            compraModel.numeroNota = compra.numeroNota;
            compraModel.fornecedor = compra.fornecedor;
            compraModel.funcionario = compra.funcionario;

            if (compra.baseCalculoST != null) compraModel.baseCalculoST = (decimal)compra.baseCalculoST;
            if (compra.valorNota != null) compraModel.valorNota = (decimal)compra.valorNota;
            if (compra.baseCalculoIcms != null) compra.baseCalculoIcms = (decimal)compra.baseCalculoIcms;
            if (compra.valorIcms != null) compra.valorIcms = (decimal)compra.valorIcms;
            if (compra.valorST != null) compra.valorST = (decimal)compra.valorST;
            if (compra.statusCompra != null) compra.statusCompra = (String)compra.statusCompra;
            

            return compraModel;
        }

        public List<CompraModel> ListCompraToListCompraModel(List<Compra> compras)
        {
            return compras.Select(CompraToCompraModel).ToList();
        }

   }
}